package com.zxy.zxyrpc.springboot.starter.annotation;

import com.zxy.zxyrpc.constant.RpcConstant;
import com.zxy.zxyrpc.fault.tolerant.TolerantStrategyKeys;
import com.zxy.zxyrpc.loadBalancer.LoadBalancerKeys;
import com.zxy.zxyrpc.retry.RetryStrategyKeys;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 服务消费者注解（用于注入服务）
 *
 * @author zxy
 * @since 2025/5/30
 **/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RpcReference {
    /**
     * 服务接口类
     */
    Class<?> interfaceClass() default void.class;

    /**
     * 服务版本号
     */
    String serviceVersion();

    /**
     * 负载均衡器
     */
    String loadBalancer();

    /**
     * 重试策略
     */
    String retryStrategy();

    /**
     * 容错策略
     */
    String tolerantStrategy();

    /**
     * 模拟调用
     */
    boolean mock() default false;
}
